Amazon HoneycodeのテーブルをAWS CLIで操作してみる
いわさです。
ここしばらくアップデートのなかったHoneycodeですが、先日APIの更新が行われていましたので眺めていました。
そこで気づいたのですが、そもそもHoneycodeをAPIで操作したことがなかったです。
そこで、本日はAWS CLIからHoneycodeに対して何が出来るかを確認してみました。
AWS CLI
Honeycodeコンソールの全ての操作が出来るわけではありません。
本日時点では主にテーブルデータの参照と操作、オートメーションの実行が可能です。
つかってみる
まず、CLIで操作するにあたりリソースを特定する必要があります。
必要な情報はHoneycodeのURLから取得することが出来ます。
このURLをデコードすると以下の形式となっています。
https://app.honeycode.aws/arn:aws:sheets:us-west-2:123456789012:mobileapp:7b71a9cb-3cce-40bd-8c22-0968b8a264d3/3b1eb03f-8156-4a73-9464-f4a6d2b3d3f1/d9d3b56d-7984-4fe7-9f71-197e9b977afd?ref=app_list
このURLで指定されているパラメータはそれぞれ以下を示しています。
パラメータ | 値 |
---|---|
Workbook ID | 7b71a9cb-3cce-40bd-8c22-0968b8a264d3 |
Application ID | 3b1eb03f-8156-4a73-9464-f4a6d2b3d3f1 |
Screen ID | d9d3b56d-7984-4fe7-9f71-197e9b977afd |
テーブルの取得
まずは、Workbook IDとlist-tables
サブコマンドを使ってテーブル情報を取得してみましょう。
本日時点でオレゴンリージョン(us-west-2)でのみHoneycodeは利用出来ますのでリージョンの指定を行います。
iwasa.takahito@hoge ~ % aws honeycode list-tables --workbook-id 7b71a9cb-3cce-40bd-8c22-0968b8a264d3 --region us-west-2 { "tables": [ { "tableId": "361a16b6-5281-4e5c-89c6-914fb5cf4c4b", "tableName": "Dashboard" }, { "tableId": "9755e17e-ee00-4fc4-a3e2-fe88f8759e20", "tableName": "Done" }, { "tableId": "5c39507d-4725-434f-8fce-16fbfa0b55e5", "tableName": "ReminderOptions" }, { "tableId": "84f67907-5a33-4183-b9aa-71d2813ffe5b", "tableName": "Tasks" }, { "tableId": "d6e43ec9-76fc-442a-8844-65c76ad961a7", "tableName": "_README" } ], "workbookCursor": 483253581 }
今回はTasksテーブルのレコードを操作してみたいと思いますので、TasksテーブルのテーブルIDを取得しておきます。
データの取得
次に先程取得したテーブルIDとlist-table-rows
サブコマンドを使って、テーブルデータを取得してみたいと思います。
iwasa.takahito@hoge ~ % aws honeycode list-table-rows --workbook-id 7b71a9cb-3cce-40bd-8c22-0968b8a264d3 --table-id 84f67907-5a33-4183-b9aa-71d2813ffe5b --region us-west-2 --max-items 2 { "rows": [ { "rowId": "row:84f67907-5a33-4183-b9aa-71d2813ffe5b/78480e11-9369-4e80-b6c1-b07ed8e8d0fb", "cells": [ { "format": "AUTO", "rawValue": "Try a template app", "formattedValue": "Try a template app" }, { "format": "CONTACT", "rawValue": "iwasa.takahito@exmaple.com", "formattedValue": "Takahito Iwasa" }, { "formula": "=IFERROR([Assignee][First Name],\"\")", "format": "AUTO", "rawValue": "Takahito", "formattedValue": "Takahito" }, { "format": "DATE", "rawValue": "43985", "formattedValue": "6/3/20" }, { "format": "ROWLINK", "rawValue": "row:9755e17e-ee00-4fc4-a3e2-fe88f8759e20/45adb115-a216-440f-9e36-7fe94c8ff861", "formattedValue": "Yes" }, { "format": "ROWLINK", "rawValue": "row:5c39507d-4725-434f-8fce-16fbfa0b55e5/5bffe141-b456-43b0-8554-730bc6601b94", "formattedValue": "Due Date" }, { "formula": "=IFERROR([Due]-[Remind On][Duration],\"\")", "format": "DATE", "rawValue": "43985", "formattedValue": "6/3/20" } ] }, { "rowId": "row:84f67907-5a33-4183-b9aa-71d2813ffe5b/e5f45544-24f6-4db5-b0f7-da0337c8f9cc", "cells": [ { "format": "AUTO", "rawValue": "Create a new app", "formattedValue": "Create a new app" }, { "format": "CONTACT", "rawValue": "iwasa.takahito@example.com", "formattedValue": "Takahito Iwasa" }, { "formula": "=IFERROR([Assignee][First Name],\"\")", "format": "AUTO", "rawValue": "Takahito", "formattedValue": "Takahito" }, { "format": "DATE", "rawValue": "44018", "formattedValue": "7/6/20" }, { "format": "ROWLINK", "rawValue": "row:9755e17e-ee00-4fc4-a3e2-fe88f8759e20/27f6b60c-8c5a-4a37-873b-436c86d6e858", "formattedValue": "No" }, { "format": "ROWLINK", "rawValue": "row:5c39507d-4725-434f-8fce-16fbfa0b55e5/5bffe141-b456-43b0-8554-730bc6601b94", "formattedValue": "Due Date" }, { "formula": "=IFERROR([Due]-[Remind On][Duration],\"\")", "format": "DATE", "rawValue": "44018", "formattedValue": "7/6/20" } ] } ], "workbookCursor": 483253581, "columnIds": [ "e5682856-1bc3-454e-bf0d-e7ddf107ecbd", "f675872a-8b18-4ab0-b959-47c4fe4a0a0f", "5fbf22cc-00a9-4a0a-bacb-cd00164e5002", "62ad12e2-376c-4074-8143-31c549f8757a", "54ba1b96-90b9-47d5-bd16-9fa62506f189", "01f1f8f4-b7bd-4c48-9f88-2a637b25f681", "3b61275d-d827-477c-a96f-bbb1c527e1cb" ], "rowIdsNotFound": null }
タスクテーブルのデータが取得出来ていますね。
データの作成・更新・削除
データの参照だけでなく、作成・更新・削除も可能です。
ここではbatch-create-table-rows
サブコマンドを使ってレコードを追加してみましょう。
先程取得したテーブルデータにcolumnIds
が含まれていますのでタスク名に該当するカラムIDを取得しておきます。list-table-columns
サブコマンドを使っての取得も可能です。
iwasa.takahito@hoge ~ % aws honeycode batch-create-table-rows --workbook-id 7b71a9cb-3cce-40bd-8c22-0968b8a264d3 --table-id 84f67907-5a33-4183-b9aa-71d2813ffe5b --region us-west-2 --rows-to-create batchItemId=aaaaaa,cellsToCreate={e5682856-1bc3-454e-bf0d-e7ddf107ecbd={fact=CreatedByCLI}} { "workbookCursor": 7603422391881275, "createdRows": { "aaaaaa": "row:84f67907-5a33-4183-b9aa-71d2813ffe5b/40a3c823-8744-3952-a294-9f92debf1eec" } }
作成レコードがすぐにHoneycode側に反映されました。
CloudTrailを確認
さいごにCloudTrailを確認してみました。
今回CLIから操作した内容はしっかりとCloudTrailに記録されていました。
ここでちょっと思ったのですが、Honeycode上の一般ユーザの操作履歴もCloudTrailで確認出来るのでしょうか?
テーブルにレコードを追加してみます。
どうやらCLIから直接操作したものに限って証跡管理出来るようなので、Honeycodeコンソール上からの操作は管理されないようです。
Honeycodeのオートメーションなどを使って何らかのストリームに連携するなど準備しないといけない気がしますね。
さいごに
本日はHoneycodeをAWS CLIで操作してみました。
提供されているAPIを見ると、Honeycodeアプリケーションの自動構築用ではなく、外部連携用と考えて良いと思います。
これまで、ZapierやAppFlowで設定出来る範囲が外部連携できる範囲かなと思っていたのですが、CLIやAPIでテーブルデータを操作出来るのであればなんでもできそうですね。
外部サービスに依存せずに連携部分を作り込むことも出来るので活用の幅はかなり広がりそうです。